package com.wiz.web.manager.fatory;

import org.springframework.stereotype.Service;

import com.wiz.common.util.MD5;
import com.wiz.vo.criteria.PayCriteria;
import com.wiz.vo.to.wjika.WjBaseData;
import com.wiz.vo.to.wjika.WjPayReqData;
import com.wiz.vo.type.PayMethodType;

/**
 * 获取万集支付数据模板
 * @author Hakeny
 */
@Service("wjiDataFactory")
public class WjiDataFactory{
	
	/**
	 * 根据支付方式不同选择不同data模板
	 * @param criteria
	 * @param type
	 * @return
	 */
	public WjBaseData getDataByType(PayCriteria criteria,int type){
		if(PayMethodType.BAR_PAY.getId() == type){//商户代理商的条码支付
			return getScanPayReqData(criteria);
		}else if(PayMethodType.QUERY.getId() == type){
			return getQueryReqData(criteria);
		}else if(PayMethodType.REVERSE.getId() == type){
			return getReverseReqData(criteria);
		}
		return null;
	}
	
	/**
	 * 获取扫码支付参数
	 * @param criteria
	 * @return
	 */
	private WjPayReqData getScanPayReqData(PayCriteria criteria){
		WjPayReqData data = new WjPayReqData();
		data.setAmount(criteria.getTotalFee()/100.00);
		data.setMorderno(criteria.getOutTradeNo());
		data.setDeviceno("1000");
		data.setPaycode(criteria.getAuthCode());
		data.setMerid(criteria.getSubMchId());
		String sign = data.toSign();
		data.setSign(MD5.crypt(sign));//把签名数据设置到Sign这个属性中
		return data;
	}
	
	/**
	 * 获取扫码查询
	 * @param criteria
	 * @return
	 */
	private WjPayReqData getQueryReqData(PayCriteria criteria){
		WjPayReqData data = new WjPayReqData();
		data.setMorderno(criteria.getOutTradeNo());
		String sign = data.toSign();
		data.setSign(MD5.crypt(sign));//把签名数据设置到Sign这个属性中
		return data;
	}
	
	
	/**
	 * 获取取消扫码支付
	 * @param criteria
	 * @return
	 */
	private WjPayReqData getReverseReqData(PayCriteria criteria){
		WjPayReqData data = new WjPayReqData();
		data.setMorderno(criteria.getOutTradeNo());
		data.setDeviceno("1000");
		data.setMerid(criteria.getSubMchId());
		String sign = data.toSign();
		data.setSign(MD5.crypt(sign));//把签名数据设置到Sign这个属性中
		return data;
	}
	
	
}
